笔记
小菜鸟小样儿~
这个作者很懒,什么都没留下…
展开
-
DMP项目架构及各个模块
根据DMP的三种不同数据来源诞生了三中不同的DMP平台,分别是第一方DMP:单体企业,以企业CRM系统为主,第二方DMP:广告公司,以广告投放为主,第三方DMP:大数据服务商,以数据交易为主。DMP的数据来源主要有三方数据,第一方数据主要包含企业供应商数据、企业会员数据、企业销售数据;第二方数据主要包含用户行为数据,用户消费数据;整个DMP项目架构分为四层,分别是应用层——人群圈选、数据分析、标签管理,服务层——统计指标数据和挖掘行为偏好数据,数据加工层——数据加工、定时任务,数据存储层——Hive数仓。原创 2024-01-02 18:21:55 · 496 阅读 · 0 评论 -
使用Python进行页面开发——Django的其他核心功能
项目中的CSS、图片、js都是静态文件。原创 2022-08-04 16:06:43 · 288 阅读 · 1 评论 -
使用Python进行页面开发——Django常用Web工具
自定义上传的视图代码(2) 使用模型处理上传文件: 注意:如果属性类型为ImageField获使用图片处理,那么就需要安装包Pillow 图片存储路径 在项目根目录下创建media文件夹 图片上传后,会被保存到“/static/media/cars/图片文件” 打开settings.py文件,增加media_root项 使用django后台管理,遇到ImageField类型的属性会出现一个file框,完成文件上传二、分页操原创 2022-08-03 17:02:18 · 1330 阅读 · 0 评论 -
使用Python进行页面开发——模板层
首先在当前应用目录下创建一个模板标签目录,建议内放一个的空文件然后在目录下创建一个模板标签文件pagetag.py(这个名字随意取),具体代码如下#自定义过滤器(实现大写转换)',val)#自定义标签(实现减法计算)使用在模板文件使用6.自定义标签大写相减。...原创 2022-08-01 21:00:38 · 1368 阅读 · 0 评论 -
使用Python进行页面开发——Django视图层
session一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django启用会话的支持时才可用,详细内容见“状态保持”method一个字符串,表示请求使用的HTTP方法,常用值包括'GET'、'POST'COOKIES一个标准的Python字典,包含所有的cookie,键和值都为字符串。POST一个类似于字典的对象,包含post请求方式的所有参数。path一个字符串,表示请求的页面的完整路径,不包含域名。GET一个类似于字典的对象,包含get请求方式的所有参数。...原创 2022-07-31 15:47:43 · 364 阅读 · 0 评论 -
使用python进行页面开发——Django模型层
在模型中定义属性,会生成表中的字段Django根据属性的类型确定以下信息1.当前选择的数据库支持字段的类型2.渲染管理表单时使用的默认html控件3.在管理站点最低限度的验证Django会为表增加自动增长的主键列,每个模型只能有一个主键列。属性命名限制1.不能是Python的保留关键字2.由于Django的查询方式,不允许使用连续的下划线4.1编辑mydemo/myapp/models.py需要改成)4.2测试Model类的使用在项目根目录下执行命令3519)张三。...原创 2022-07-28 09:39:40 · 378 阅读 · 0 评论 -
使用Python进行网站页面开发——Django的URL路由配置
当从使用切换为使用path(),re_path()反之亦然时,特别重要的是要注意视图参数的类型可能会更改,因此您可能需要调整视图。一旦正则表达式匹配,Django将导入并调用给定的视图,这是一个简单的Python函数(或基于类的视图)。当Django找不到与请求的URL匹配的正则表达式时,或者异常引发时,Django将调用错误处理视图。值必须是可调用的,或者代表视图的完整的Python导入路径的字符串,应该被调用来处理手头的错误条件。,因为这样可以更轻松地在匹配的预期含义和视图的参数之间意外引入错误。...原创 2022-07-22 17:33:00 · 2430 阅读 · 0 评论 -
使用Python进行网站页面开发——Django快速入门
但我们的自定义应用程序在哪里?并没有显示在后台管理索引页面上。就会发现增加了。原创 2022-07-21 16:07:36 · 7172 阅读 · 4 评论 -
使用Python进行网站页面开发——Django框架介绍与安装
Web上的一些最繁忙的网站利用了Django快速灵活扩展的能力。Django认真对待安全性,帮助开发人员避免许多常见的安全错误。Django的宗旨在于帮助开发人员快速从概念到完成应用程序。框架就是程序的骨架,主体结构,也是个半成品。4.Web框架中的一些概念MVC和MVT。四、Django框架介绍---特点。#默认会安装Django的最新版本。检测当前是否安装Django及版本。3.Python中常见的框架。五、Django框架安装。三、Django框架介绍。可重用、成熟,稳健、...原创 2022-07-18 16:01:17 · 567 阅读 · 0 评论 -
使用Python进行网站页面开发——网页布局介绍
注意使用HTML5语义化标签的布局模式在IE9以下浏览器不兼容,可使用下面的代码解决。页面的逻辑区域或内容组合(区块)定义正文或一篇完整的内容(文章)定义页面或区段的头部(页眉)定义页面或区段的尾部(页脚)定义页面或区段的导航区域(导航)定义补充或相关内容(侧边栏)第一种直接在页头中使用CSS样式修饰。一、传统的DIV+CSS布局。作用提高了搜索引擎优化。1.HTML5语义化标签。...原创 2022-07-18 09:32:50 · 1077 阅读 · 0 评论 -
使用Python进行页面开发——CSS
text-transform对象中的文本的大小写capitalize(首字母)|uppercase大写|lowercase小写*text-decoration字体画线none无、underline下画线,line-through贯穿线。区域外的部分是透明的。rect(上-右-下-左)如cliprect(auto50px20pxauto);font-stretch[了解]文字的拉伸是相对于浏览器显示的字体的正常宽度(大部分浏览器不支持)。...原创 2022-07-15 15:32:43 · 2823 阅读 · 1 评论 -
使用Python进行网站页面开发——HTML
目录一、HTML基础语法1.HTML是什么?2.HTML基本结构3.HTML注释二、HTML常用标签介绍1.文本标签2.格式化标签3.图片标签4.超级链接标签5.表格标签(用来显示数据)6.表单标签(用来接收数据)7.行内框架标签8.多媒体标签●HTML是HyperText Mark-up Language的首字母简写,即超文本标记语言。●HTML不是一种编程语言,而是一种标记语言。●超文本指的是超链接,标记指的是标签,是一种用来制作网页的语言,这种语言由一个个的标签组成。●用这种语言制作的文件保存的原创 2022-07-13 15:01:59 · 15176 阅读 · 1 评论 -
Python基础——函数与模块
一、函数声明函数:def关键字加上函数的名字再跟上函数的参数列表。调用函数: • 使用 ( ) 进行调用。• 没有 ( ), 不进行调用。 • 一切皆是对象 ,函数也是对象可变和不可变类型:...原创 2022-04-16 19:41:33 · 1537 阅读 · 0 评论 -
Python基础——标识符、Python保留字、数据类型和控制流、数字类型
一、标识符1.第一个字符必须是字母表中字母或下划线_。(首字不能为数字)2.标识符的其他部分由字母、字母和下划线组成。3.标识符对大小写敏感。4.并且python3可以用中文作为变量名。二、Python保留字保留字即关键字,我们不能把它们用作任何标识符名称。Python的标准库提供了一个keyword模板,可以输出当前版本的所有关键字。>>> import keyword>>> keyword. kwlist['False', 'Non原创 2022-04-10 23:00:01 · 2489 阅读 · 0 评论 -
力扣第144题“二叉树的前序遍历”的解题思路
参考代码:class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); Stack<TreeNode> stack = new Stack<>(); while (root != null || !stack.isEmpty()原创 2022-01-24 17:45:41 · 217 阅读 · 0 评论 -
力扣第141题“环形链表”的解题思路
参考代码:public class Solution { public boolean hasCycle(ListNode head) { ListNode fast=head; ListNode slow=head; while(fast!=null&&fast.next!=null){ fast = fast.next.next; slow=slow.next;原创 2022-01-21 16:32:45 · 307 阅读 · 0 评论 -
力扣第136题“只出现一次的数字”的解题思路
参考代码:class Solution { public int singleNumber(int[] nums) { int res = 0; for (int num : nums) { res = res ^ num; } return res; }}位运算,每个元素依次异或。i ^ 0 = i;i ^ i = 0;且异或满足交换律和结合律。所有依次异或最终留下的即原创 2022-01-20 18:11:04 · 356 阅读 · 0 评论 -
力扣第125题“验证回文串”的解题思路
参考代码:class Solution { public boolean isPalindrome(String s) { char[] w=s.toCharArray(); int i=0;int j=w.length-1; for(int k=0;k<w.length;k++){ if(w[k]>='A'&&w[k]<='Z'){ w[k]=(char)原创 2022-01-19 18:52:07 · 436 阅读 · 0 评论 -
力扣第121题“买卖股票的时机”的解题思路
参考代码:class Solution { public int maxProfit(int[] prices) { if(prices.length<=1){ return 0; } int min = prices[0], max = 0; for(int i = 1; i < prices.length; i++) { max = Math.max(max, pri原创 2022-01-18 17:45:06 · 319 阅读 · 0 评论 -
力扣第119题“杨辉三角二”的解题思路
class Solution { public List<Integer> getRow(int numRows) { List<List<Integer>>list=new ArrayList<>();for(int i=0;i<=numRows;i++){ List<Integer>list1=new ArrayList<>(); for(int j=0;j<=i;j++) .原创 2022-01-17 17:37:18 · 134 阅读 · 0 评论 -
力扣第118题“杨辉三角”的解题思路
参考代码:class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> list=new ArrayList<>(); for(int i=0;i<numRows;i++){ if(i==0){ List<Integer&g原创 2022-01-16 17:52:15 · 210 阅读 · 0 评论 -
力扣第112题“路径之和”的解题思路
参考代码:class Solution { public boolean hasPathSum(TreeNode root, int targetSum) { if(root==null){ return false; } if(root.left==null&&root.right==null){ return targetSum-root.val==0; }原创 2021-12-19 23:04:48 · 185 阅读 · 0 评论 -
力扣第111题“二叉树的最小深度”的解题思路
参考代码:class Solution { public int minDepth(TreeNode root) { if(root==null){ return 0; } if(root.left==null&&root.right!=null){ return 1+minDepth(root.right); } if(root.left!=null原创 2021-12-15 23:24:28 · 511 阅读 · 0 评论 -
力扣第110题“平衡二叉树”的解题思路
参考代码class Solution { public boolean isBalanced(TreeNode root) { if(root==null){ return true; } int left=maxDepthleft(root.left); int right=maxDepthright(root.right); int a=left-right; if(a&原创 2021-12-13 23:35:27 · 251 阅读 · 0 评论 -
力扣第108题“将有序数组转换为二叉搜索树”的解题思路
捋了半天终于把这题的思路捋出来了!参考代码:class Solution { public TreeNode sortedArrayToBST(int[] nums) { if(nums==null){ return null; } return helper(nums,0,nums.length-1); } public TreeNode helper(int[] nums,int left...原创 2021-12-12 23:46:11 · 311 阅读 · 1 评论 -
力扣第104题“二叉树的最大深度”解题思路
主要是maxDepth()的用法maxDepth(root.left)可以计算左子树的深度,maxDepth(root.right)可以计算右子树的深度,再加一就是树的深度。原创 2021-12-08 23:53:09 · 258 阅读 · 0 评论 -
力扣第101题“对称二叉树”的解题思路
class Solution { public boolean isSymmetric(TreeNode root) { if (root == null) { return true; } return cmp(root.left, root.right); } private boolean cmp(TreeNode node1, TreeNode node2) { if (node1 .原创 2021-12-08 23:02:13 · 305 阅读 · 0 评论 -
力扣第94题“二叉树的中序遍历”的知识及解题思路
List<Integer>List是一个接口<>表示了List里面放的对象是什么类型的,这样写就表示了,你List里面放的必须是Integer类型的关于ArrayListArrayList类是一个特殊的数组–动态数组。通过添加和删除元素,就可以动态改变数组的长度。优点:1、支持自动改变大小2、可以灵活的插入元素3、可以灵活的删除元素局限:比一般的数组的速度慢一些;ArrayList是List接口的一个实现类。ArrayList类是继承AbstractList...原创 2021-11-29 23:32:00 · 131 阅读 · 0 评论 -
力扣第88题“合并两个有序数组”解题思路
参考代码:class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int p = m–+n—1;while(m>=0&&n>=0){nums1[p–]=nums1[m]>nums2[n]?nums1[m–]:nums2[n–];}while(n>=0){nums1[p–]=nums2[n–];}}}因为nums1的长度是m+n所以从右边开始填补。如果原创 2021-11-27 00:16:26 · 250 阅读 · 0 评论 -
力扣第70题“爬楼梯”解题思路
第n个台阶只能从第n-1或者n-2个台阶爬上去,即到第n-1的走法+到第n-2个的走法=到第n个的走法,以此类推一路加上去即为到第n个原创 2021-11-23 21:05:09 · 240 阅读 · 0 评论 -
力扣第69题“Sqrt(x)”的解题思路
解法一:牛顿迭代法计算x2 = n的解,令f(x)=x2-n,相当于求解f(x)=0的解,如左图所示。首先取x0,如果x0不是解,做一个经过(x0,f(x0))这个点的切线,与x轴的交点为x1。 同样的道理,如果x1不是解,做一个经过(x1,f(x1))这个点的切线,与x轴的交点为x2。 以此类推。 以这样的方式得到的xi会无限趋近于f(x)=0的解。经过(xi, f(xi))这个点的切线方程为f(x) = f(xi) + f’(xi)(x - xi),从这个公式可以看出,当求得结果的时候,相邻两次求的解原创 2021-11-22 23:52:00 · 490 阅读 · 0 评论 -
力扣第67题“二进制求和”可能会用到的小知识
力扣第67题“二进制求和”可能会用到的小知识一、String、StringBuffer、StringBuilder区别StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都 会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。先说一下集合的故事,HashTable是线程安全的,很多方法都是synchronized方法,而HashMap不是线程安全的,原创 2021-11-20 23:43:53 · 66 阅读 · 0 评论 -
【无标题】
java中数组中没给出值的都默认为初始值0原创 2021-11-18 23:37:43 · 35 阅读 · 0 评论 -
【无标题】
**力扣第58题“最后一个单词的长度”需要了解的知识点**一、空字符串、NULL、空格串的区别1、表示区别string str1 = “”; //空字符串 str1.length() 等于 0string str2 = null; //NULLstring str3 = " "; //空格串 str2.length() 等于 12、内存区别“” :分配了内存 ,分配了一个空间 null :未分配内存 " " :分配了内存二、ch原创 2021-11-17 23:31:46 · 43 阅读 · 0 评论 -
【无标题】
力扣第53题“最大子序和”的java解法相关知识点一、数组的三种遍历方法第一种:打印输出数组最大子序和中的全部元素public class Test{public static void main(String [] args){int [] arr = {1,2,3,4,5};//创建一个有元素的数组,共有五个元素for(int i = 0;i< arr.length;i++){//进行遍历System.out.print(i+"\t");//输出其中的元素}System.out原创 2021-11-16 23:16:19 · 47 阅读 · 0 评论 -
2021-11-09
力扣第21题“合并两个有序列表”需要理解的小知识一、头结点的含义及引入的作用1.概念头结点:是虚拟出来的一个节点,不保存数据。头结点的next指针指向链表中的第一个节点。对于头结点,数据域可以不存储任何信息,也可存储如链表长度等附加信息。头结点不是链表所必需的。头指针:是指向第一个结点的指针,如果链表没有引入头结点,那么头指针指向的是链表的第一个结点。头指针是链表所必需的。[注意]无论是否有头结点,头指针始终指向链表的第一个结点。如果有头结点,头指针就指向头结点。2.为何引入头结点1)对链表的删除、原创 2021-11-09 22:07:41 · 182 阅读 · 0 评论 -
2021-11-08
力扣题库第20题“有效的括号”中可能涉及到的知识点:一、栈在java中的相关用法栈是Vector的一个子类,它实现了一个标准的后进先出的栈,栈本身最重要的就是 push 和 pop.堆栈只定义了默认构造函数,用来创建一个空栈。堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法Stack()除了由Vector定义的所有方法,自己也定义了一些方法:序号方法描述1、boolean empty()测试堆栈是否为空。2、Object peek( )查看堆栈顶部的对象,但不从堆栈中移除原创 2021-11-08 23:24:32 · 56 阅读 · 0 评论 -
2021-11-07
字符与字符串的区别1、“字符“”用单引号作为定界符,“字符串”用双引号作为定界符;2、“字符”在屏幕上打印一个字符的时候,需要在printf函数中,使用“%c”这个占位符。“字符串”需要用使用的是“%s”这个占位符;3、 “字符”和“字符串”还有一个区别,“字符”占据一个字节,但是“字符串”是占据多个字节。4、在“字符串”的结尾处,自动被编译器加上了’\0’这个字符,在ASCII码中,’\0’表示的是一个空字符。5、定义“字符”时可以用关键字char,只占用一个字节。在定义“字符串”的时候,需要在变量名原创 2021-11-07 22:00:31 · 54 阅读 · 0 评论