首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏软件开发-青出于蓝

    OpenJDK之CountDownLatch

    return nextc == 0; } } }     CountDownLatch里面有个内部类Sync继承了AbstractQueuedSynchronizer——这个类在java.util.concurrent.locks public void countDown() { sync.releaseShared(1); }     如List-5,内部调用了Sync的releaseShared(1),即释放1,如下List List-6 public final boolean releaseShared(int arg) { if (tryReleaseShared(arg)) { doReleaseShared Reference http://openjdk.java.net/

    66950发布于 2019-10-24
  • 来自专栏软件开发-青出于蓝

    JDK之JVM中Java对象的头部占多少byte

    Stackoverflow上看到的Java对象头部mark word和kclass pointer的大小     从Stackoverflow上看到,Java对象头部有一个mark word和一个klass java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit 所以可以看到数组和普通的Java对象头部是有区别的。 我们给List-5中的类,加上get/set/constructor,如下List-6 List-6 类A加上get/set/contructor public class A { long 图5 List-6的运行结果     图5中的结果与图4中的结果一样,说明类的方法数量,对Java对象占多少byte没有影响。当然,这里我只是实验了一个,这个结论不是很严谨。

    1.5K50发布于 2019-04-15
  • 来自专栏软件开发-青出于蓝

    Redis之SpringDataRedis对象写入到Redis中

    先来定义实体类,如下List-3和List-4 List-3 Department.java /** * @author dmj1161859184@126.com 2018-09-18 01:21 this.officeStaffs = officeStaffs; this.strings = strings; } } List-4  OfficeStaff.java \"com.mjduan.project.objectRedisTemplate.model.Department\",\"name\":\"System\",\"officeStaffs\":[\"java.util.ArrayList ,\"other\":\"other\"}" 127.0.0.1:6379[7]>     注:除了引入Spring-data-redis和Jedis,还需要引入jackson的依赖,我使用的版本如下List -6: List-6 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core

    1.2K30发布于 2019-04-15
  • 来自专栏软件开发-青出于蓝

    Spark集群安装 原

    List-4 export JAVA_HOME=/opt/jdk1.8 export HADOOP_HOME=/opt/hadoop-2.7.7 export SCALA_HOME=/opt/scala2.12 spark-eventlog 3、log4j.properties     cp log4j.properties.template  log4j.properties,修改log4j.properties,内容如下List 加入List-7中的内容,最终结果是List-6所示。 List-6 log4j.rootCategory=INFO, console,FILE log4j.appender.console=org.apache.log4j.ConsoleAppender

    68730发布于 2019-04-15
  • 来自专栏软件开发-青出于蓝

    MySQL之修改max_connections

    daemon-reload 5.重启MySQL之后,查看performance_schema数据库,     查看open_files_limit的值,这个值默认值是1024,我们可以看到这个值变为65535了,如下List List-6 mysql> select * from global_variables where variable_name like "%open_file%"; +---------------

    1.9K30发布于 2019-04-15
  • 来自专栏软件开发-青出于蓝

    Springsecurity之FilterChainProxy

    下面来看下VirtualFilterChain的doFilter,如List-6所示。 List-6 VirtualFilterChain的doFilter public void doFilter(ServletRequest request, ServletResponse response 图1     如List-6所示,会先调用additionalFilters中的Filer,之后才会调用originalChain这个Filter,如图1所示,这个过程有点递归的感觉。

    88320发布于 2019-04-15
  • 来自专栏软件开发-青出于蓝

    Springsecurity之LogoutFilter

    SimpleUrlLogoutSuccessHandler,如图2和List-5所示,它直接调用父类AbstractAuthenticationTargetUrlRequestHandler的handle方法,看List -6所示,方法determineTargetUrl决定使用哪个targetUrl;List-6中handle方法的redirectStrategy.sendRedirect(request, response authentication) throws IOException, ServletException { super.handle(request, response, authentication); } } List

    1.3K30发布于 2019-04-15
  • 来自专栏软件开发-青出于蓝

    Mybatis之ResultSetHandler

    List-5的1处,调用getRowValue方法,该方法获取resultSet中的一行数据,并将数据封装位对象 List-6 private Object getRowValue(ResultSetWrapper rowValue : null; } return rowValue; }     List-6中1处,通过反射,创建Person对象(如List-7),之后在List-6的2处 List

    1.6K20发布于 2019-10-21
  • 来自专栏软件开发-青出于蓝

    Mybatis源码阅读之一 原

    List-5的getObject()中,调用父类SqlSessionDaoSupport的方法getSqlSession(),来看下SqlSessionDaoSupport,如下List-6 List this.sqlSession, "Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required"); } }     Spring会调用List 这样List-6中,就引用了我们在图1中定义的sqlSessionFactory,之后构造出SqlSessionTemplate。    

    74420发布于 2019-05-15
  • 来自专栏软件开发-青出于蓝

    MySQL之分页多次查询优化 原

    ------+------+------+----------+----------------+ 1 row in set, 1 warning (0.00 sec)     来验证下删除的情况 List Meituan | 16 | | 13 | Jack | 16 | +----+---------+------+ 5 rows in set (0.00 sec) List-7 删除一条满足List

    1.3K50发布于 2019-04-15
  • 来自专栏软件开发-青出于蓝

    AtomicInteger之实现简析 原

    public final int getAndIncrement() { return unsafe.getAndAddInt(this, valueOffset, 1); } List 为什么AtomicBoolean中的value是int类型,而不是boolean类型,见https://stackoverflow.com/questions/13724858/why-java-util-concurrent-atomic-atomicboolean-is-internally-implemented-with-int 底层上是如何实现的,它是native方法 unsafe的putOrderedInt,底层上是如何实现的,它是native方法 openjdk6的unsafe.cpp文件:http://hg.openjdk.java.net jdk6/hotspot/file/4fc084dac61e/src/share/vm/prims/unsafe.cpp openjdk7的unsafe.cpp文件:http://hg.openjdk.java.net jdk7/hotspot/file/4fc084dac61e/src/share/vm/prims/unsafe.cpp openjdk8的unsafe.cpp文件:http://hg.openjdk.java.net

    76540发布于 2019-04-15
  • 来自专栏软件开发-青出于蓝

    SpringFramework之RequestBodyAdvice的使用

    RequestBodyAdvice的实现     有人用RequestBodyAdvice来做参数的解密(前端传过来的是加密的),或者使用RequestBodyAdvice进行全局统一返回,但是我的需求是只对Java ArgumentResolverAdvice 4处判断这个类是否是RequestBodyAdvice类型,如果不是则不会加到结果集,所以就是我们要实现RequestBodyAdvice的原因     List-5的3处我们再来看下,如下List List-6 public Object resolveBean() { return this.bean instanceof String ?

    3K30发布于 2020-07-01
  • 来自专栏软件开发-青出于蓝

    Springboot之ConfigFileApplicationListener

    name, properties); } } return null; } }     YamlPropertySourceLoader如下List List-6 public class YamlPropertySourceLoader implements PropertySourceLoader { public String[] getFileExtensions

    1.1K20发布于 2019-08-06
  • 来自专栏软件开发-青出于蓝

    Centos7上Glusterfs集群安装

    db_volume \ replica 3 node1:/data_gluster/db node2:/data_gluster/db node3:/data_gluster/db force     激活卷,如下List -6 List-6 gluster start db_volume     到这里,我们虽然激活了卷,但是还不能直接使用,要将其挂载出来,如下List-10,将卷db_volume挂载到/mnt/gluster

    1.3K20发布于 2019-07-09
  • 来自专栏软件开发-青出于蓝

    Spark集群安装方式2 原

    spark-env.sh文件(如果不存在,则cp  spark-env.sh.template   spark-env.sh),修改为如下List-2,这个修改三台机器上都要做: List-2 export JAVA_HOME spark-root-org.apache.spark.deploy.master.Master-1-master.out     在workerr1/worker2上,spark安装目录,执行如下: List

    47210发布于 2019-05-06
  • 来自专栏软件开发-青出于蓝

    Feign源码分析之FeignClientFactoryBean

    C client : configurations) { this.configurations.put(client.getName(), client); } }     List AnnotationConfigApplicationContext的parent为当前Spring上下文,这样当在AnnotationConfigApplicationContext中获取不到bean时,就会从父ApplicationContext中获取 List

    1.6K10发布于 2019-10-08
  • 来自专栏软件开发-青出于蓝

    Mybatis之开启MySQL的预编译功能 原

    -12T23:29:34.287157Z 5 Close stmt     JDBC连接的url加上useServerPrepStmts=true&cachePrepStmts=true,如下List -6所示: List-6 url=jdbc:mysql://127.0.0.1:3306/mjduan?

    2.1K20发布于 2019-04-15
  • 来自专栏软件开发-青出于蓝

    SpringFramework之@Controller/@RequestMapping解析

    String类型的bean name,如下List-5,首先获取bean name对应的Class,getMappingForMethod在RequestMappingHandlerMapping中实现,如List AopUtils.selectInvocableMethod(method, userType); registerHandlerMethod(handler, invocableMethod, mapping); }); } } List

    78220发布于 2019-07-01
  • 来自专栏软件开发-青出于蓝

    Mybatis之Executor

    在没有特殊设置的情况下,mybatis中,如下List-6,默认使用的executor是SimpleExecutor,StatementHandler是RoutingStatementHandler,内部委托给 List-6 <select id="findByUsername" resultType="Person" parameterType="Person"> select * from person

    83510发布于 2019-10-21
  • 来自专栏软件开发-青出于蓝

    Presto之分布式安装查询Hive

    node_master node.data-dir=/opt/prestoserver/data 5、在etc下新建catalog目录,在etc/catalog下新建hive.properties,如下List -6所示,192.168.33.33:9083是hive的metastore服务地址 List-6 connector.name=hive-hadoop2 hive.metastore.uri=thrift

    1.5K30发布于 2019-07-29
领券