
Java&开发工具
文章平均质量分 61
Java&开发工具
技术宝哥
15年互联网大厂技术人,深耕技术管理、技术架构、广告技术、AI大模型,致力于技术传播、分享
微信公众号:技术宝哥
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Semaphore解决高并发场景下的有限资源的并发访问问题
在高并发编程中,Java的Semaphore类提供了一种有效的方式来控制对有限资源的并发访问。Semaphore通过维护一个计数器来管理资源的访问权限,允许一定数量的线程同时访问资源。主要方法包括acquire()用于获取许可,release()用于释放许可,以及availablePermits()和tryAcquire()等用于查询和尝试获取许可。通过一个停车场模拟的例子,展示了Semaphore如何确保在任何时刻停车场的车辆数量不超过其容量,从而有效地管理资源竞争问题。原创 2025-05-20 22:12:24 · 981 阅读 · 0 评论 -
Java多线程场景下 CountDownLatch、CyclicBarrier
在Java多线程编程中,CountDownLatch、Semaphore和CyclicBarrier是关键的同步工具,各自具有独特的功能和应用场景。CountDownLatch允许一个或多个线程等待其他线程完成特定操作,通过递减计数器实现线程的精准等待。CyclicBarrier则为一组线程提供一个同步点,使它们相互等待,直到所有线程都到达屏障点后继续执行。通过运动场比赛的代码示例,展示了CyclicBarrier用于同步运动员起跑,CountDownLatch用于统计比赛结束的场景。原创 2025-05-20 15:37:26 · 1108 阅读 · 0 评论 -
git学习——上传项目代码到github
这是我第一次应用git,以下仅供git的初学者参考。 github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。这对于一般人来说公共仓库就已经足够了。 1.注册账户以及创建仓库 要想使用github第一步当然是注册github账号了。之后就可以创建仓库了(免费用户只能建公共仓库),Create原创 2013-04-16 11:27:04 · 8110 阅读 · 0 评论 -
使用仓库管理器——Sonatype Nexus的九大理由
转自:http://juvenshun.iteye.com/blog/285059目前有很多组织使用了一些工具依赖于Maven仓库,但他们并没有采用一个仓库管理器,对于这一点我十分惊讶。可能没人提出来这一点,没人站出来告诉别人使用一个仓库管理器能带来什么好处。我经常能从很多不使用Maven仓库管理器的组织那里听到这样的字眼:“我们不需要那么复杂……”,或者“中央仓库够了,我们不需要在本地建立这转载 2013-01-19 17:27:16 · 1569 阅读 · 0 评论 -
在Git中如何使用类似SVN中的revert功能恢复一个changed file
选择文件,右键选择Git Index 然后会弹出下面的页面点击“Copy all non-conflicting changes from Right to Left”另一种方法是通过右键”replace“原创 2013-09-05 14:49:41 · 2368 阅读 · 0 评论 -
svn在线安装方法
<br />菜单栏 Help– Find and Install–<br /> 按new Remote Site, <br />Name 填 svn , URL填http://subclipse.tigris.org/update ,<br />一直next到finished为止 菜单栏 Window– Show View– other<br />选择打开SVN目录下的SVN资源库原创 2011-03-28 16:57:00 · 909 阅读 · 0 评论 -
Java高并发那点事儿
从事Java编程这么八年对,从事视频广告也有五年,感觉积累了很多技术和广告行业经验,然后当表达的时候却发现表达不出来,终其原因是总结的太少,写的太少,对知识而言一直是看多,写少。写也更多是在实战用法方面,没有更多的总结。接下来我讲对这么多年掌握的技术、广告行业经验进行一个总体的总结思考,广告引擎是一个高并发、高可用的系统原创 2017-05-26 02:04:29 · 823 阅读 · 0 评论 -
Tomcat运行Java Web内存溢出总结
转自:http://my.oschina.net/leejun2005/blog/82941 如果JVM里运行的程序, 它的内存堆和持久存储区域的都满了,这个时候程序还想创建对象实例的话,垃圾收集器就会启动,试图释放足够的内存来创建这个对象。这个时候如果垃圾收集器 没有能力释放出足够的内存,它就会抛出OutOfMemoryError内存溢出错误。 SUN JVM的内存管理方式转载 2016-04-17 19:20:54 · 2125 阅读 · 0 评论 -
Java多线程-java.util.concurrent.atomic包原理解读
参考学习:http://blog.csdn.net/zhangerqing/article/details/43057799多线程基本类型AtomicReferenceAtomic*Atomic包是java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类,但Atomic的线程安全是如何来实现的呢?1、硬件同步策略现在的处理器都支持多重处理,当...原创 2015-12-27 17:56:12 · 2033 阅读 · 0 评论 -
JVM 调优总结:一些概念
转自:http://my.oschina.net/leejun2005/blog/6470171、数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,sh转载 2016-04-17 18:49:26 · 593 阅读 · 0 评论 -
通过dump分析Java对象在内存中到底占用多大空间?
一、内存结构分析1、概念:Shallow Size:Shallow size就是对象本身占用内存的大小,不包含其引用的对象。retained size: 自身对象+引用对象的retained大小。2、jvm内存创建对象组成部分1)对象头包括两部分:第一部分markword,用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏...原创 2020-02-19 00:31:48 · 4354 阅读 · 1 评论 -
Java多线程-并发中的集合详解
参考:http://www.cnblogs.com/dolphin0520/p/3938914.html多线程并发中的集合一、Map1、ConcurrentHashMap(1) 对HashTable来说,synchronized是锁整张表的,但是对ConcurrentHashMap来说,允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash原创 2015-12-27 19:28:40 · 3159 阅读 · 0 评论 -
JAVA性能剖析 JVM内存管理与垃圾回收
转自:http://my.oschina.net/leejun2005/blog/124011内存管理和垃圾回收是JVM非常关键的点,对Java性能的剖析而言,了解内存管理和垃圾回收的基本策略非常重要。最近进行了系列性能测试培训,对JVM内存管理涉及到的概念重新学习梳理了遍,总结下方便大家共同学习进步。一、为什么要分代在程序运行过程当中,会创建大量的对象,这些对转载 2016-04-17 19:26:04 · 800 阅读 · 0 评论 -
Struts1和Struts2的区别
转自:http://www.blogjava.net/tokyo2006/archive/2009/05/09/269734.htmlAction 类: • Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。(侵入式编程,不赞同)• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的转载 2012-02-07 22:15:32 · 590 阅读 · 0 评论 -
Tomcat6 与 Tomcat7配置管理员信息
一:tomcat6配置管理员信息1:打开tomcat6下的~/conf/tomcat-users.xml文件,关于用户角色、管理员的信息都在这个配置文件中。2:在配置文件节点下添加如下xml 3:启动tomat6,输入:用户名:admin 密码:admin 登陆到管理员界面。二:tomcat7配置管理员信息1:打开tomcat7下的~/conf/tomca原创 2013-08-27 17:42:25 · 1136 阅读 · 0 评论 -
Memcached Java客户端编程(转)
<br />转自http://j2ee.blog.sohu.com/70343632.html<br />最近一直在做一个项目的前期设计工作,考虑到后期系统的扩展和性能问题也找了很多解决方法,有一个就是用到了数据库的缓存工具memcached(当然该工具并不仅仅局限于数据库的缓存)。先简单的介绍下什么是memcached。<br /> Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached由Danga Interactive开发,用于提原创 2011-04-15 13:47:00 · 993 阅读 · 0 评论 -
jsp自定义标签
<br />jsp页面标签定义:<br />实现行为<br />实现标记行为的第一步是将scriptlet代码从原先所在的地方移到一个Java类( LastModifiedTag )中,如清单 1 所示:<br />清单 1. 创建一个时间戳标记<br />package com.jrcz.aura.util;<br />import java.io.File;<br />import java.io.IOException;<br />import java.text.DateFormat;<br />i原创 2011-05-19 16:17:00 · 880 阅读 · 0 评论 -
spring在普通类中获取request的方法
在web.xml中配置如下 org.springframework.web.context.request.RequestContextListener 在类中获取HttpServletRequest request = ((ServletRequestAttributes)RequestContex原创 2013-10-29 16:02:40 · 2003 阅读 · 0 评论 -
freemarker基本用法
<br />处理不存在的变量:<br />1、一个不存在的变量和一个是null 的变量,对于FreeMarker 来说是一样的,不论在哪里引用变量,都可以指定一个默认值来避免变量丢失这种情况,通过在变量名后面跟着一个!和默认值,例如:<h1>Welcome ${user!"Anonymous"}!</h1><br />2、当然也可以在变量名后面通过放置??来询问FreeMarker 一个变量是否存在。将它和if<br />指令合并,那么如果user 变量不存在的话将会忽略整个问候代码段:<#if user?原创 2011-05-27 19:45:00 · 1406 阅读 · 0 评论 -
spring源码解读-加载解析配置文件
http://www.iteye.com/topic/743997原创 2013-08-09 15:50:22 · 830 阅读 · 0 评论 -
abator安装及详解
1.首先,要把这个abator插件下载到myeclipse中 方法: 点击myeclipse工具栏中的help --> software updates -->find and install-->search for new features to install --> new remote site --> name = abator --> url = http://ibatis.apache.org/tools/abator-->finish 下载后,自动安装即可! 2.创建abatorCon原创 2011-03-21 18:50:00 · 3428 阅读 · 1 评论 -
freemarker用法
<br />1、添加freemarker.jar<br />2、//利用freemarker 生成静态页面<br /> public static void crateHTML(HttpServletRequest request, Map<String, Object> data,<br /> String templatePath, String targetHtmlPath) {<br /> Configuration freemarkerCfg = new Configuration();<b原创 2011-05-27 19:38:00 · 1656 阅读 · 0 评论 -
jstl标签学习总结-以及的用法
1、应用之前要在页面中引用,在lib中添加jstl.jar:2、标签详解:本身只当做 和 的父标签若使用和来做流程控制时,两者都必须为的子标签,即: : :原创 2011-04-21 16:29:00 · 937 阅读 · 0 评论 -
AOP execution
转自:http://blog.csdn.net/bobiy45785/article/details/6773947Spring AOP 用户可能会经常使用 execution pointcut designator。执行表达式的格式如下:execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name转载 2012-11-19 13:04:27 · 644 阅读 · 0 评论 -
在springMVC中的controller写单元测试
给controller写单元测试的方法有主要有两种方法一:依赖service以及dao层,通过内存数据库H2或者dbUnit做假数据库,insert假数据到内存中@RunWith(SpringJUnit4ClassRunner.class)@WebAppConfiguration@ContextConfiguration(locations = "classpath:appli原创 2013-09-26 16:06:54 · 5252 阅读 · 0 评论 -
jstl的c 标签用法
<br /> 转自:http://www.web-tag.net/all_8.htmcatch <br /><c:catch>动作用于捕获JSP元素在其体中抛出的异常。<br />示范代码:<br /><c:catch var="err"><br /> ${param.sampleSingleValue[9] == 3}<br /></c:catch> <br />${err}<br />更多 catch 信息 choose <br />用于控制嵌套<c:when>和<c:otherwise原创 2011-04-21 16:53:00 · 1264 阅读 · 0 评论 -
hibernate延迟加载详解
延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作,Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载1、实体对象的延迟加载实现方法: …… 通过将class的lazy属性设置为true,来开启实体的延迟加载特性。如果我们运行下面的代码: User user=(User)session.load(User.class,”1”);(1) System.out.println(user.getName());(2)当原创 2011-03-27 17:32:00 · 927 阅读 · 0 评论 -
struts2核心工作流程与原理
转自:http://blog.csdn.net/ichsonx/article/details/2954397这是Struts2官方站点提供的Struts 2 的整体结构。 一个请求在Struts2框架中的处理大概分为以下几个步骤: 客户端提起一个(HttpServletRequest)请求,如上文在浏览器中输入”http://localhost:8080/TestMvc/a转载 2012-02-08 11:24:44 · 665 阅读 · 0 评论 -
spring源码解读-InitializingBean的实现方法
当启动应用的时候spring会自动初始化实现InitializingBean接口的类,并且会自动调用afterPropertiesSet方法。觉得神奇,这种方式到底是如何实现呢?看了一下源码学习其设计原理:public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFactory impleme原创 2013-08-09 14:10:00 · 1428 阅读 · 0 评论 -
web过滤敏感词
<br />package demo;<br />import java.io.BufferedReader;<br />import java.io.File;<br />import java.io.FileInputStream;<br />import java.io.IOException;<br />import java.io.InputStream;<br />import java.io.InputStreamReader;<br />import java.util.Date;<br /转载 2011-04-08 10:40:00 · 1722 阅读 · 0 评论 -
hibernate中的component技术例子
<br />如果一张表有很多字段,那么我们除了将表进行拆分之外,在hibernate中我们还有一种很好的方法,我们可以将表中的字段进行分类,然后将同一类的<br />用对象进行封装,这就是我们这儿用到的Component技术:<br />1、<br />package domain;<br />public class Address {<br />private String city;<br />private String street;<br />private String zipcode;<br转载 2011-03-27 19:28:00 · 837 阅读 · 0 评论 -
Session 工作原理
转自:http://blog.csdn.net/kgd1120/article/details/2159458session的工作原理 一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的。 session,中文经常翻译为会话,其本来的含义是指有始有终转载 2012-11-21 21:00:21 · 710 阅读 · 0 评论 -
jstl的fmt详解
转自:http://www.web-tag.net/all_9.htm bundle <br /><fmt:bundle> 这签用于资源配置文件的绑定,并在页面中显示出来。<br />示范代码:<br /><fmt:bundle basename="property.test"> <br />更多 bundle 信息 formatDate <br /><fmt:formatDate> 标签用于格式化日期。<br />示范代码:<br /><fmt:formatDate value="${blogEntry转载 2011-04-21 16:37:00 · 1331 阅读 · 0 评论 -
hibernate缓存机制的理解
Hibernate缓存的作用: Hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据Hibernate缓存分类: Hibernate缓存包括两大类:Hibernate一级缓存和Hibern原创 2011-12-27 15:37:11 · 1082 阅读 · 0 评论 -
jstl之foreach用法详解
<br />转自:http://www.cn-java.com/www1/?579036/viewspace-61273<br /> <br /><br />关键字: jstl <%@ page contentType="text/html; charset=GBK" %> <br /><%@ page import="java.util.*" %><br /><%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <br /><html>转载 2011-04-21 15:34:00 · 2194 阅读 · 0 评论 -
正则表达式
转自:http://www.cnblogs.com/rubylouvre/archive/2010/03/09/1681222.html元字符( [ { \ ^ $ | ) ? * + .预定义的特殊字符<!--.table1 {border:1px solid #666; border-collapse:collapse; width:70转载 2013-03-26 09:27:36 · 1081 阅读 · 0 评论 -
spring源码下载地址
http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-framework-3.0.5.RELEASE.zip这个是带文档的 http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-framework-3.0.5.RELEASE原创 2012-09-27 10:07:01 · 753 阅读 · 0 评论 -
两个list嵌套的foreach嵌套显示
<br />private String name;<br />private List subtypes;<br /> <br /><c:forEach var="toptype" items="${type}"><br /><div>${toptype.name }</div><br /><c:set var="second" value="${toptype.subtypes}"></c:set><br /><c:forEach var="sectype" items="${second}" varS原创 2011-05-11 10:34:00 · 3140 阅读 · 0 评论 -
spring功能分析以及优点总结
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替转载 2012-01-17 11:12:49 · 1414 阅读 · 0 评论 -
Tomcat7 相较于 Tomcat6 的新特性、增强功能与性能
Tomcat7与Tomcat6相比,主要有以下方面的更新: 新特性:1、使用随机数去防止跨站脚本攻击(Cross Site Request forgery,CSRF);2、改变了安全认证中的jessionid的机制,防止session攻击;3、内存泄露的侦测和防止;在我们把程序部署到生产环境额时候,通常会遇见Permgen:OOM的问题,这个时候,通常通过增大permgen原创 2013-08-30 18:14:21 · 3251 阅读 · 0 评论