耗时27ms,总记录数11544

  • Spring-IOC实现【02-其他实现方式】 _我要知道_郭雄飞

    Spring-IOC实现【02-其他实现方式】

    [摘要]接上文Spring-IOC实现【01-XML配置方式】Java配置方式SpringBoot流行之后,Java配置开始被广泛使用。Java配置本质上,就是使用一个Java类去代替xml配置,这种配置方式在SpringBoot中得到了广泛的使用。实现步骤如下:1.创建java项目2.引入相关jar包3.创建实体类4.创建配置文件类/***该类相当于application.xml文件*@authordp ...
  • Spring AOP实现原理

    [摘要]代理模式我们知道,SpringAOP的主要作用就是不通过修改源代码的方式、将非核心功能代码织入来实现对方法的增强。那么SpringAOP的底层如何实现对方法的增强?实现的关键在于使用了代理模式代理模式的作用就是为其它对象提供一种代理,以控制对这个对象的访问,用于解决在直接访问对象时带来的各种问题。代理主要分为两种方式:静态代理和动态代理静态代理静态代理主要通过将目标类与代理类实现同一个接口,让代理 ...
  • socket-demo的实现 _我要知道_郭雄飞

    socket-demo的实现

    [摘要]目录前言IO通讯模型IO通讯模型简介1.阻塞式同步IO2.非阻塞式同步IO3.多路复用IO(阻塞+非阻塞)4.异步IOJava对IO模型的支持注意点及实现方案TCP粘包/拆包1.问题说明2.解决思路3.demo方案客户端或服务端掉线检测功能1.实现思路2.代码实现客户端身份获知、强制身份验证1.实现思路2.代码实现socket异常处理与垃圾线程回收1.实现思路2.代码实现项目结构参考前言最近公司在 ...
  • Thrift设计与实现 _我要知道_郭雄飞

    Thrift设计与实现

    [摘要]文章简介从Thrift的C++源代码中看,thrift的设计思想,讨论跨语言优质RPC解决方案。Thrift的诞生背景Thrift的诞生时间大概断定为2007年左右,随着Facebook网站流量的增加和站点功能的日益丰富,已经远远超出了原有LAMP架构的处理能力,对系统服务的可伸缩性和高性能提出了技术挑战。Facebook的工程师文化趋向于选择可用的最好的工具和实现手段解决软件开发中的问题,确保简 ...
  • Python实现Plugin

    [摘要]1.Plugin与Python插件的历史最早可追溯至1970年代,它是一种程序组件,通过和应用程序的互动,为应用程序增加一些所需要的特定的功能[维基]。插件允许第三方开发者对已有的程序功能进行扩展和完善,具体的例子包括音频播放软件的解码器、浏览器的视频播放插件等。插件需要按照一定的接口规范与应用程序互动,这个规范是调用它的应用程序定义的。为了在实践上应用,我看了两篇搜索比较靠前的博客文章,它们的代 ...
  • canvas实现俄罗斯方块 _我要知道_郭雄飞

    canvas实现俄罗斯方块

    [摘要]好久没使用canvas了,于是通过写小游戏“俄罗斯方块”再次熟悉下canvas,如果有一定的canvas基础,要实现还是不难的。实际完成的Demo请看:canvas俄罗斯方块。原理详解看游戏最终界面,可知需要实现以下关键功能:游戏面板,也就是12*20的方格,以及是否填充了方块信息;运动方块,方块需要实现移动,变形的功能。界面的实现整个面板就是以左上角(0,0)为原点的坐标系,右上角(12,0)左 ...
  • 柯里化函数的实现

    [摘要]记录柯里化函数实现的学习过程:柯里化通常也称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果。如果要实现下面这个方法:add(2)(1,3,4)(2,3)(3)(4,6)(7,98)()//133上面这个函数当参数为空的时候执行了内部参数所有值的相加,所以我们应该考虑当参数不为空的时候将 ...
  • Pulsar Consumer实现介绍 _我要知道_郭雄飞

    Pulsar Consumer实现介绍

    [摘要]Pulsar-Consumer“Pulsarisadistributedpub-submessagingplatformwithaveryflexiblemessagingmodelandanintuitiveclientAPI.”Pulsar是pub-sub模式的分布式消息平台,拥有灵活的消息模型和直观的客户端API。Pulsar由雅虎开发并开源的下一代消息系统,目前是Apache软件基金会的孵 ...
  • Vue.js 源码实现 _我要知道_郭雄飞

    Vue.js 源码实现

    [摘要]目录Vue.js代码实现1.步骤一2.步骤二3.步骤三Vue.js工作机制初始化编译响应式虚拟dom更新视图编译Vue.js代码实现检验学习效果的最好方法就是自己造轮子。最近在学习Vue源码,写了一个迷你版vue,实现数据响应式。从step1到step3.2,是开发步骤和实现思路,每一步都可以独立运行。代码地址:https://github.com/dora-zc/miniature-vue目录结 ...
  • CSS Sticky Footer实现 _我要知道_郭雄飞

    CSS Sticky Footer实现

    [摘要]上图所显示的效果就是stickyFooter,当页面主题内容不够长时,footer定位在窗口的底部,当页面主题内容超出窗口后,footer显示在页面的最底部以下给出几种实现方案:1.FlexBox布局HTML结构如下:<body><divclass="header">StickyFooter</div><divclass="content">< ...
  • 集群选举算法实现 _我要知道_郭雄飞

    集群选举算法实现

    [摘要]一个分布式服务集群管理通常需要一个协调服务,提供服务注册、服务发现、配置管理、组服务等功能,而协调服务自身应是一个高可用的服务集群,ZooKeeper是广泛应用且众所周知的协调服务。协调服务自身的高可用需要选举算法来支撑,本文将讲述选举原理并以分布式服务集群NebulaBootstrap的协调服务NebulaBeacon为例详细说明协调服务的选举实现。为什么要选NebulaBeacon来说明协调服 ...
  • IE8实现媒体查询 _我要知道_郭雄飞

    IE8实现媒体查询

    [摘要]IE8实现媒体查询IE8下想实现不同分辨率样式的兼容,需要用Css3中的media,可是IE8不支持@media啊翻不出去,那找度娘果然找到了一个Demo测试一下,IE8媒体查询也不是多难1、下载Respond2、找到Respond文件中的respond.src.js3、已测试Demo为例依次创建Index.html、Index.css、IE8Index.css,最后添加respond.src.j ...
  • synchronized底层实现学习 _我要知道_郭雄飞

    synchronized底层实现学习

    [摘要]上文我们总结了synchronized关键字的基本用法以及作用,并未涉及synchronized底层是如何实现的,所谓刨根问底,本文我们就开始synchronized原理的探索之旅吧(*>﹏<*)。1.对象锁是什么不同于ReentrantLock的显式加锁,synchronized的加锁方式属于隐式加锁,从代码中看我们只知道当线程执行到被synchronized包围的代码块时会获取锁, ...
  • Go channel实现原理

    go通道基于go的并发调度实现,本身并不复杂,go并发调度请看我的这篇文章:go并发调度原理学习1.channel数据结构typehchanstruct{qcountuint//缓冲区中已有元素个数dataqsizuint//循环队列容 ..."> [摘要]go通道基于go的并发调度实现,本身并不复杂,go并发调度请看我的这篇文章:go并发调度原理学习1.channel数据结构typehchanstruct{qcountuint//缓冲区中已有元素个数dataqsizuint//循环队列容 ...
  • MySQL事务实现原理 _我要知道_郭雄飞

    MySQL事务实现原理

    [摘要]MySQL事务隔离级别的实现原理知识储备只有InnoDB支持事务,所以这里说的事务隔离级别是指InnoDB下的事务隔离级别隔离级别读未提交:一个事务可以读取到另一个事务未提交的修改。这会带来脏读,幻读,不可重复读问题读已提交:一个事务只能读取另一个事务已经提交的修改。其避免了脏读,仍然存在不可以重复读和幻读问题可重复读:同一个事务中多次读取相同的数据返回的结果是一样的。其避免了脏读和不可重复读问题 ...
  • java实现哈夫曼编码 _我要知道_郭雄飞

    java实现哈夫曼编码

    [摘要]java实现哈夫曼编码哈夫曼树既然是学习哈夫曼编码,我们首先需要知道什么是哈夫曼树:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(HuffmanTree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。哈夫曼编码在日常计算机的使用中,我们一定会出现下面这种情况:假如给定a、b、c、d、e五个字符,它们在文本中出现的概率如 ...
  • 实现逻辑回归-神经网络 _我要知道_郭雄飞

    实现逻辑回归-神经网络

    [摘要]一、基本概念1、逻辑回归与线性回归的区别?线性回归预测得到的是一个数值,而逻辑回归预测到的数值只有0、1两个值。逻辑回归是在线性回归的基础上,加上一个sigmoid函数,让其值位于0-1之间,最后获得的值大于0.5判断为1,小于等于0.5判断为0二、逻辑回归的推导\(\haty\)表示预测值,\(y\)表示训练标签值1、一般公式\[\haty=wx+b\]2、向量化\[\haty=w^Tx+b\] ...
  • canvas 实现刮刮乐 _我要知道_郭雄飞

    canvas 实现刮刮乐

    [摘要]在解决问题前,我们先来了解一下canvas标签canvas是html5出现的新标签,像所有的dom对象一样它有自己本身的属性、方法和事件,其中就有绘图的方法,js能够调用它来进行绘图。context是一个封装了很多绘图功能的对象,获取这个对象的方法是:varcanvas=document.querySelector('canvas');varctx=canvas.getContext("2d"); ...
  • Redisson分布式锁实现 _我要知道_郭雄飞

    Redisson分布式锁实现

    [摘要]1.基本用法<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.8.2</version></dependency>Configconfig=newConfig();config.u ...
  • 【排序算法】java实现

    [摘要]1.冒泡排序最简单的排序实现,冒泡排序,是一种交换排序,它的基本思想是:凉凉比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。//冒泡排序privateint[]bubbleSort(int[]arr){for(inti=0;i<arr.length;i++)for(intj=arr.length-1;j>i;j--)if(arr[j]<arr[j-1]){swap( ...
  • java-socket-demo的实现 _我要知道_郭雄飞

    java-socket-demo的实现

    [摘要]目录前言IO通讯模型IO通讯模型简介1.阻塞式同步IO2.非阻塞式同步IO3.多路复用IO(阻塞+非阻塞)4.异步IOJava对IO模型的支持注意点及实现方案TCP粘包/拆包1.问题说明2.解决思路3.demo方案客户端或服务端掉线检测功能1.实现思路2.代码实现客户端身份获知、强制身份验证1.实现思路2.代码实现socket异常处理与垃圾线程回收1.实现思路2.代码实现项目结构参考前言最近公司在 ...
  • Object Pooling(对象池)实现

    [摘要]在文章开始之前首先要思考的问题是为什么要建立对象池。这和.NET垃圾回收机制有关,正如下面引用所说,内存不是无限的,垃圾回收器最终要回收对象,释放内存。尽管.NET为垃圾回收已经进行了大量优化,例如将托管堆划分为3Generations(代)并设定新建的对象回收的最快,新建的短生命周期对象将进入Gen0(新建对象大于或等于85,000字节将被看作大对象,直接进入Gen2),而Gen0通常情况下分配 ...
  • EF Core 实现多租户 _我要知道_郭雄飞

    EF Core 实现多租户

    [摘要]目录SAAS和多租户多租户数据隔离方案使用EFCore简单实现多租户单数据库实现多数据库实现源代码参考SAAS和多租户SaaS(软件及服务)区别于其他应用程序的主要特征就是能够使客户在使用应用程序时按照使用量付费。他们不需要为软件购买许可,也不需要安装、托管和管理它。这方面的操作全部由提供SaaS软件的组织负责。多租户是实现SaaS的关键因素,它可以让多个企业或组织用户共用相同的系统或程序组件,同 ...
  • Mysql实现树形递归查询

    [摘要]最近在做项目迁移,Oracle版本的迁到Mysql版本,遇到有些oracle的函数,mysql并没有,所以就只好想自定义函数或者找到替换函数的方法进行改造。Oracle递归查询oracle实现递归查询的话,就可以使用startwith...connectbyconnectby递归查询基本语法是:select1from表格startwith...connectbypriorid=pIdstartwi ...
  • 利用redis实现分布式锁 _我要知道_郭雄飞

    利用redis实现分布式锁

    [摘要]分布式锁一般有三种实现方式:1.数据库乐观锁;2.基于ZooKeeper的分布式锁;3.基于Redis的分布式锁;这里大概说一下三种方式的优缺点,数据库乐观锁优点是实现简单,只需要forupdate关键词就可以实现,缺点是无法满足高并发量以及数据库读写频繁的系统ZooKeeper分布式锁无论是从性能以及实现的功能来说都是非常优秀,只是在开发起来需要一定的基础,对新手可能不是很友好而本文主要讲第三种 ...
  • AAA游戏中雪的实现 _我要知道_郭雄飞

    AAA游戏中雪的实现

    [摘要]现在越来越多的AAA游戏中都实现了逼真的雪的效果,比如战神4、地平线:黎明时分、荒野大镖客:救赎2、古墓丽影:崛起等都实现了不错的雪地效果。今天我们就来探究一下他们的实现方式。现在主流的实现方式都是通过硬件提供的细分功能来实现的。Batman:ArkhamOrigins这个游戏里面没有地形,只有房顶和城市街道两种,所以它的做法比较取巧,局限性比较大。动态生成置换高度图,主机使用视差映射,PC使用细 ...
  • 使用 Cglib 实现多重代理 _我要知道_郭雄飞

    使用 Cglib 实现多重代理

    [摘要]前言由于Cglib本身的设计,无法实现在Proxy外面再包装一层Proxy(JDKProxy可以),通常会报如下错误:Causedby:java.lang.ClassFormatError:Duplicatemethodname“newInstance“withsignature“..........atjava.lang.ClassLoader.defineClass1(NativeMethod ...
  • Socket 编程之 TCP 实现

    [摘要]前几天介绍了计算机网络的一些概念,并介绍了几个协议。下面就说说Java中的Socket编程,服务器和客户端是如何通信的呢?首先要介绍一下Socket,我们知道在TCP/IP协议簇中,TCP、UDP协议都是在传输层,应用层基于传输层进行通信。而Socket可以看成是对TCP、UDP协议的实现。具体到编程的时候,要看业务选择是使用TCP还是UDP协议。今天主要讲的就是基于TCP通信的Socket实现。 ...
  • HashMap数据结构的C++实现

    [摘要]Hash表在计算机的应用编程中是一种很常用的数据结构,很多算法的实现都离不开它。虽然C++11标准模板库中的有hashmap类型的实现,但在工程实践中,若项目本身使用的是较低版本的C++,或是出于性能的考虑,可能需要开发出一套独立的hashmap数据类型,从而能更加方便高效的维护相关业务。出于这种目的,有必要自己梳理一下其实现代码,并分享给大家。至于hash表实现的原理主要就两种:1、链表法,2、 ...
  • 前端路由的实现方式

    [摘要]前端路由与单页页面路由就是指随着浏览器地址栏的变化,展示给用户的页面也不相同。传统的网页根据用户访问的不同的地址,浏览器从服务器获取对应页面的内容展示给用户。这样造成服务器压力比较大,而且用户访问速度也比较慢。在这种场景下,出现了单页应用。单页应用,就是只有一个页面,用户访问一个网址,服务器返回的页面始终只有一个,不管用户改变了浏览器地址栏的内容或者在页面内发生了跳转,服务器不会重新返回新的页面, ...