learn and grow up

learn and grow up

学无止境

windows编译openJDK之c编译器找不到解决
写在前面为什么单独列出来这个问题呢?是因为其他问题网上都有很多类似的示例和解决方法,比如Cygwin 版本不对,包不对等等,这些我就不再写了。 c编译器找不到的问题花了我很多时间去找资料,功夫不负有心人,让我找到了结局方法,所以写下来记录。 问题按照之前的流程安装好所必需的环境:cygwin 、VS2010、freeType 2.7后,开始对openJDK进行编译。 12cd /cygdrive/c/openJDK8/jdk8ubash ./configure --with-freetype=/cygdrive/c/openJDK8/freetype-2.10.1 --with-boot...
windows编译openJdk之二-freeType+VS+jdk
安装openJDK下载官方下载地址:http://jdk.java.net/java-se-ri/8 freeType freeType最好下载已经编译好的,下载后解压至和openJDK同一目录下 下载地址:https://codeload.github.com/ubawurinna/freetype-windows-binaries/zip/master Visual Studio 2010 Compliers安装 根据指导手册,OpenJDK Windows构建需要VS2010专业版编译器。编译器以及其它工具的安装位置希望由变量VS100COMNTOOLS定义,这个会由Mic...
windows编译openJdk之一-CYGWIN
写在前面最近在学习JVM,就接触到JDK的源码,传统的ORACLEJDK也就是JDK没有被开源,而OpenJDK是JDK的开放源码版本,以GPL协议的形式发布,适用于商业和个人。 准备openJDK编译环境,第一步就是要去安装个CYGWIN,用来在windows下模拟linux运行环境。 JDK和OpenJDK的区别,可以归纳为以下几点: 授权协议的不同: OpenJDK采用GPL V2协议发布,而JDK则采用JRL协议发布。两个协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。 OpenJDK只包含最精简的JDK: Ope...
java的okhttp再封装
写在前面java生态中有很多对http封装的组件,比如原生的 HttpURLConnection 或者apache的 HTTPClient、spring cloud中的RestTemplate和Feign等。 其中: HttpURLConnection 和HttpClient:代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,不建议直接使用。 RestTemplate和Feign主要是访问restful服务,其他非restful会很复杂。 所以项目中对于非restful服务,使用了okhttp,OkHttp是一款优秀的HTTP框架,它支持get请求和post请求,支持基于Ht...
lambda中的受检查异常
写在前面最近开始尝试使用lambda表达式,使用起来感觉代码写起来速度快了很多,也整洁了不少。但是lambda表达式也有多坑,比如隐晦难懂,debug困难等等。今天就遇到了一个问题:lambda无法抛出受检查异常。 正文 场景 我们都知道java异常分为:受检查异常(Checked Exception)跟非受检异常(UnChecked Exception) 受检异常表示代码中必须显示的处理该异常,比如try-catch或者在方法声明上加入throws关键字把异常向上抛出。 非受检异常也被称作运行时异常,就像我们常用的RuntimeException,表示代码中可以不进行处理,直白点说就是...
Springboot test
写在前面之为什么要写测试用例 可以避免测试点的遗漏,为了更好的进行测试,可以提高测试效率 可以自动测试,可以在项目打包前进行测试校验 可以及时发现因为修改代码导致新的问题的出现,并及时解决 这是TDD中最重要的一环。 正文在springboot中引入springboot-test需要以下几个步骤: pom中引入 spring-boot-starter-test 如果需要打包是不运行test,则可以再pom中加入如下配置 12345678<!--打包跳过测试--><plugin> <groupId>org.apache.maven.pl...
zuul转发请求后前缀问题
示例zuul作为springcloud的网关使用路由功能是,会默认把路由的前缀去掉 比如路由前:http://127.0.0.1:8181/api/demo/list 路由后为: http://192.168.1.100:8080/demo/list 如果我们需要让他不去掉api这个前缀,那么需要在对应路由上加上该属性: strip-prefix: false 源码解析首先我们从最开始加载zuul说起 @EnableZuulProxy 最开始的配置日入口是这里 123456EnableCircuitBreaker@Target({ElementType.TYPE}...
mybatis_plus_generator with DDD
写在前面​ 随着项目越来越庞大,MVC的传统web架构已经出现了弊端,就算是分了微服务,项目中的各个模块间也不可避免的出现了各种复杂的关系与调用,可能改动一个小地方,将会牵一发而动全身。 ​ 所以公司开始大力推广DDD领域模型设计,经过几天的学习和上手,自己简单的根据mybatis-generator写了个可以生成关于javaWeb的DDD模型的工具类(并且可以轻松切换生成代码的type,MVC或者DDD) 正文代码地址为: https://github.com/styyt/mybatis-generator-plus-ddd 生成的结构大致为: 模型服务内调用过程为: ​...
SpringBoot启动报Failed to retrieve application JMX service URL
背景最近将项目切换到IDEA上,SpringBoot启动报如下错误: 经过长时间分析和排查,终于解决了此问题。 解决思路和过程首先看到报错信息指的是jmx连接失败,自己猜测可能有以下几种可能 jmx服务没有启动 IDEA配置有问题 IDEA用java发送的请求被防火墙或者其他安全设备阻拦 那么依次进行问题排查 把程序搬到eclipse,启动本应用,发现可以正常启动,so排除了第一种可能 在IDEA上用mvn package打包成jar包,然后再手动启动该jar包 发现可以正常启动,so排除第二种可能 使用管理员身份运行IDEA 再重新启动 成功了!果然是因为权限的问题!...
再从volatile第二个特性看JVM内存模型(JMM)
上一篇文章我们从volatile第一个特性浅析了JMM(JVM内存模型)及其在JVM中的实现,这篇文章我们从其第二个特性继续深入分析JVM的内存模型,当然本文依然假设大家已经了解了java基础知识和JVM的内存结构。 先来回忆下的volatile的第二个特性 1屏蔽指令重排序:指令重排序是编译器和处理器为了高效对程序进行优化的手段,它只能保证程序执行的结果时正确的,但是无法保证程序的操作顺序与代码顺序一致。这在单线程中不会构成问题,但是在多线程中就会出现问题。非常经典的例子是在单例方法中同时对字段加入volatile,就是为了防止指令重排序。 示例代码老规矩,先上代码,这次还是拿单例模...
avatar
styytNOTstop
Knowledge has no limit.
FRIENDS
liwei